

import Request_post from "./request/Request_post"
import Request_get from "./request/Request_get"

var unformatDate = require("./utils/CustomFunction/dateUnFormat.js")
var getToday = require("./utils/CustomFunction/getToday.js")

//小程序配置
import config from './config/config'; 

import regeneratorRuntime, { async } from 'regenerator-runtime'

// 引入启用商圈快速积分的商户列表
import wxPayItg_mch from "./config/Enabled_PayIntegrat_Mch.js"




App({
  
  onLaunch:function(options){
    var that = this

    /** 获取小程序Appid */ 
    const accountInfo = wx.getAccountInfoSync()
    
    that.globalData.miniProgram_appid = accountInfo.miniProgram.appId

    /** 根据小程序 Appid 判断 停车缴费应该进入的页面（这里是停车缴费页面的上下文地址）*/
    if(accountInfo.miniProgram.appId == 'wx8b1a6f908925e4c4'){
      that.globalData.pkvContext = 'Hxgc'
    }else if(accountInfo.miniProgram.appId == 'wxd6c7318cfb47eb32'){
      that.globalData.pkvContext = 'Jshy'
    }else if(accountInfo.miniProgram.appId == 'wx2e4f358a20d4a419'){
      that.globalData.pkvContext = 'Ztjc'
    }else{
      that.globalData.pkvContext = 'kmabacus'
    }
    console.log('PT：'+that.globalData.pkvContext)
  },


  onShow:function(options){
    var that = this

    /** 小程序版本自动更新 */
    if (wx.canIUse('getUpdateManager')) {
      const updateManager = wx.getUpdateManager()
      updateManager.onCheckForUpdate(function (res) {
       if (res.hasUpdate) {
        updateManager.onUpdateReady(function () {
         wx.showModal({
          title: '更新提示',
          content: '新版本已经准备好，是否重启应用？',
          success: function (res) {
           if (res.confirm) {
            updateManager.applyUpdate()
           }
          }
         })
        })
        updateManager.onUpdateFailed(function () {
         wx.showModal({
          title: '有新版本了哟~',
          content: '新版本已经上线，请您删除当前小程序，重新搜索打开'
         })
        })
       }
      })
    } else {
      wx.showModal({
       title: '提示',
       content: '当前微信版本过低，无法使用该功能，请升级到最新微信版本后重试。'
      })
    }

    
    /** 获取设备信息（ Android || IOS ） */
    wx.getSystemInfo({
      success: function (res) {
        that.globalData.systemModel = res.model
        console.log('当前的手机型号：'+that.globalData.systemModel)
      },
      fail: function (res) {},
      complete: function (res) {}
		})
		
		/** 自定义头部导航用到的全局变量 */
		that.Customnavbar();


    /** 获取小程序进入的场景值 && 进入小程序的页面路径 */
    that.globalData.SceneValue =  options.scene   //场景值 
    that.globalData.Scenepath = '/'+options.path           //进入的页面路径
    console.log(that.globalData.Scenepath)

    /** 昆明奥博克公司测试环境 自动做刷新redis 动作，正式项目，不执行 */
    that.baseinfo_refresh_Promise = new Promise((resolve, reject)=>{
      that.baseinfo_refresh();
      resolve(true)
    })
    
    /** B01 Begin 每次运行小程序，都需要获取 后台的extopt（微营销自定义参数配置）Api 请求：微营销基础信息查询-wxmkt_baseinfo-8173    003-扩展设置查询(微营销) */
    that.baseinfo_refresh_Promise.then(v => {
      wx.request({
        url: config.domainName+"api_wxmkt_baseinfo/sysextopts",
        data: {},
        method:"GET",
        header: {'content-type': 'application/json'}, // 默认值
        success(res){
          wx.setStorageSync('StrMktopt', res.data.payload.return_data)
        }
      })
    })

    /** A01 Begin 每次登录都做login的登录操作 */
    that.loginPromise = new Promise((resolve, reject)=>{
      /** Api请求 微信官方 登录请求 获取Code*/
      wx.login({
        success: res => {
          const code = res.code; 
          /** Api wxapi服务：001-获取微信OpenID（使用Code 到微信官方后台换取 openId, sessionKey, unionId） */
          wx.request({
            url: config.domainName+"api_wxapi/wxminiprogram/code2session",
            data: {
              code:code,
            },
            method:"GET",
            header: {'content-type': 'application/json'}, // 默认值
            success(res){
              wx.setStorageSync('StrWxloginInfo',res.data.payload)
              that.globalData.wx_openid = res.data.payload.openid
              that.globalData.unionid = res.data.payload.unionid
          
              /** Api mktapi服务：04-001会员信息查询（验证已绑定） */
              wx.request({
                url:config.domainName+"api_wxmkt_server/mbrreg/findwxmbr",
                data:{
                  appid: config.as_appid,
                  appuserid: that.globalData.wx_openid,
                  unionid: that.globalData.unionid,
                },
                method:"GET",
                header: {'content-type': 'application/json'}, // 默认值
                success (res) {
                  // console.log(res)
                  if(res.data.sc == 200 && res.data.payload.return_no == 1){        //会员查询成功
                    wx.removeStorageSync('StrMbrInfo')
                    wx.setStorageSync('StrMbrInfo', res.data.payload.return_data)
                    that.globalData.mbrid = res.data.payload.return_data.mbrid
                    that.globalData.mbrclsid = res.data.payload.return_data.mbrclsid
                    that.globalData.mbl = res.data.payload.return_data.mbl
                    that.globalData.ownflg = res.data.payload.return_data.ownflg
                    that.globalData.regflg = 'y'
                    /* 
                      以上全局变量在app.js中进行赋值后，使用Promise回调（在各个pages.js页面中进行回调—————这里成功赋值后在pages页面才执行代码，否则不执行 ）
                      注意：使用Promise成功回调 主要是用在 相关页面的onload 或 onshow周期函数中有api请求,并且需要用到上述全局变量的地方。
                      目的：公众号菜单直接进入某个页面，也能正确获取上述全局变量，以供api请求时要用到的上述变量作为请求参数
                    */ 
                    resolve(true);
                  }else{ //会员不存在 或 微信Openid未绑定线下会员
                    // console.log('会员查询不成功 A，需要进入注册绑定页面')
                    that.globalData.mbl = 'EmptyNumber' //会员不存在时，也给给电话号码的全局变量赋一个不存在但是不为空的字符串，避免request请求时，提示“mbl”不允许为空
                    resolve(true);

                    console.log('App.js执行：wx.redirectTo跳转')
                    that.globalData.regflg = 'n'
                    //当非会员进入小程序时，获取初始页面that.globalData.Scenepath，如果不是index页面的才直接进入授权主页，否则“主页”会出现两次体验不好。
                    wx.redirectTo({                             
                      url: that.globalData.Scenepath + that.globalData.Scenepath_parameter
                    });



                    // if(options.path != 'pages/index/index'){  
                    //   that.globalData.regflg = 'n'
                    //   //当非会员进入小程序时，获取初始页面that.globalData.Scenepath，如果不是index页面的才直接进入授权主页，否则“主页”会出现两次体验不好。
                    //   wx.redirectTo({                             
                    //     // url:that.globalData.homePage+'?regflg=n'
                    //     url: that.globalData.Scenepath + that.globalData.Scenepath_parameter +'?regflg=n'
                    //   });
                    // }


                  }
                } 
              })
            },
            fail(){
              wx.showModal({
                title: '微信登录秘钥获取失败，请重试',
                showCancel:"false"
              })
            }
          })
        }
      })

    })



    // 在小程序页面中使用插件提供的上报地理位置的js接口（必须）
    that.loginPromise.then((resolve)=>{
      var miniProgram_appid = that.globalData.miniProgram_appid
      var mchList = wxPayItg_mch.Mch_List
      for( var i in mchList ){
        if(mchList[i].mch_miniProgram_appid == miniProgram_appid){
          console.log('本项目开通了商圈快速积分',mchList[i].mch_miniProgram_appid,miniProgram_appid)
          var openid = wx.getStorageSync('StrWxloginInfo').openid
          // 使用插件提供的上报地理位置（必须）
          var myPluginInterface = requirePlugin('jhcfzx_PayItgPlugin');
          myPluginInterface.getLocation(openid).then(res => {
              console.log(res)
          })
          break;
        }
      }
    })

	},
	

	/** 自定义头部导航用到的全局变量 */
  Customnavbar:function(){
    let menuButtonObject = wx.getMenuButtonBoundingClientRect();
    wx.getSystemInfo({
      success: res => {
			
        let statusBarHeight = res.statusBarHeight,
        navTop = menuButtonObject.top,//胶囊按钮与顶部的距离
        navHeight = statusBarHeight + menuButtonObject.height + (menuButtonObject.top - statusBarHeight)*2;//导航高度
        this.globalData.navHeight = navHeight*2;
        this.globalData.navTop = navTop;
        this.globalData.windowHeight = res.windowHeight;
				this.globalData.localmchHeight = res.screenHeight
      },
      fail(err) {
        // console.log(err); 
      }
    })
  },


  /** 后台基础信息 刷新 —— 仅限我们公司自己的小程序 (被调用) */
  baseinfo_refresh:function(){
    var that = this
    // 小程序Appid == 昆明奥博克时，直接用刷新redis数据库的活动列表，否则为项目环境时，不刷新，按正常的逻辑进行
    if(that.globalData.miniProgram_appid == 'wxa08aa9f00b5ecf23'){
      var _today = unformatDate.DatString(getToday.getToday())

      // 003-扩展设置刷新
      wx.request({
        url: config.domainName+"api_wxmkt_baseinfo/sysextopts-refresh",
        data: {actdat: _today},
        method:"GET",
        header: {'content-type': 'application/json'}, // 默认值
        success(res){
          wx.setStorageSync('StrMktopt', res.data.payload.return_data)
          console.log('已刷新扩展设置Redis数据')
        }
      })
      // 001-优惠券活动刷新
      wx.request({
        url: config.domainName+"api_echcopact/echcopact-refresh",
        data: {actdat: _today},
        method:"GET",
        header: {'content-type': 'application/json'}, // 默认值
        success(res){
          console.log('已刷新活动列表Redis数据')
        }
      })
    }else{
      // 当小程序Appid != 昆明奥博克时，随便做一个无意义赋值的动作。
      that.globalData.Invalid = 'n'
    }
	},
	


	/** 小程序防止重复点击或重复触发事件 
	 * 可设置全局变量和全局函数，直接使用app唯一实例调用，方便快捷。
	 * 页面调用：
	 * tap (e) {
			getApp().preventActive(()=>{
				//code...
			})
		}
	*/
	preventActive (fn) {
    const self = this
    if (this.globalData.PageActive) {
      this.globalData.PageActive = false
      if (fn) fn()
      setTimeout(() => {
        self.globalData.PageActive = true
      }, 4000); //设置该时间内重复触发只执行第一次，单位ms，按实际设置
    } else {
      console.log('重复点击或触发')
    }
  },


  


  



  
 
  globalData: {


		PageActive: true,

    //微信登录用户的 Openid
    wx_openid:"", //同时存缓存
    //微信登陆用户的 Unionid
    unionid:"",   //同时存缓存
    //微信扫一扫 扫描 扫码领券的二维码获得的 规则单号 && 发券商服id 初始化
    rulechbllno:"null",
    copcltid:"null",
    //Erp-会员信息全局变量
    mbrid:"",
    mbrclsid:"",
    mbl:"",  //同时存缓存
    sex:"",
    name:"",
    birthday:"",
    //营销活动可购买剩余数量在页面上的显示上限（ActshowVldqty <= 20 则在页面上显示————目前仅剩: X 件）
    ActshowVldqty: 20,
    // 显示倒计时的时间戳（当时间戳小于这个值时，则在页面上显示倒计时）
    // 24小时：86400000
    // 1小时：3600000
    // 10分钟：600000
    // 1分钟：60000
    ShowCountdownStamp: 86400000,
    //江东业主标志（和谐中心项目）
    ownflg:"",
    //主页的页面地址
    homePage:"/pages/HomePage/Markeing_HomePage/Markeing_HomePage",
    // homePage:"/pages/HomePage/Member_HomePage/Member_HomePage",
		Scenepath_parameter:"",

		
		policyConect:[
			"为了ERP会员信息资料完善，并在前端展示，开发者将在获取你的明示同意后，使用你的相册(仅读取)权限。",
			"为了识别会员的唯一身份验证，开发者将在获取你的明示同意后，收集你的手机号。",
			"开发者收集你选中的照片或视频信息，用于上传消费小票实现积分补登。",
			"开发者收集你选中的文件，用于拍照积分补登。"
		]

  }
})